package my.util;

/**
 * <p>
 * 栈
 * </p>
 *
 * @author AJun
 * @since 2020/8/13
 */
public class Stack<E> {

    /**
     * 把 ArrayList 变为成员变量，让栈不具备 ArrayList 的方法，完全的一个栈
     */
    private final List<E> list = new ArrayList<>();

    /**
     * 返回栈大小
     */
    public int size() {
        return list.size();
    }

    /**
     * 是否为空
     */
    public boolean empty() {
        return list.isEmpty();
    }

    /**
     * 清空栈内元素
     */
    public void clear() {
        list.clean();
    }

    /**
     * 入栈
     */
    public void push(E element) {
        list.add(element);
    }

    /**
     * 出栈，返回栈顶元素，并删除
     */
    public E pop() {
        return list.remove(list.size() - 1);
    }

    /**
     * 返回栈顶元素，但不删除
     */
    public E peek() {
        return list.get(list.size() - 1);
    }

}
